package com.yunxi.service.localService.otd;

import com.yunxi.core.service.IServicePlus;
import com.yunxi.core.web.ApiResult;
import com.yunxi.model.otd.OtdProduceCalendar;
import com.yunxi.otd.pojo.OtdProduceCalendarWeekVO;
import com.yunxi.otd.pojo.OtdWeekColumnHeadVO;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 生产工作日历 服务类
 * </p>
 *
 * @author XUQI
 * @since 2019-07-02
 */
public interface OtdProduceCalendarService extends IServicePlus<OtdProduceCalendar> {

    void updateIsWorkByDay(Date day, Integer isWork, String realName);

    /**
     * 根据日期范围查询工作日
     *
     * @param startDate 开始
     * @param endDate 结束
     */
    List<Date> findWorkDay(Date startDate, Date endDate);

    /**
     * 根据年月查询工作日
     *
     * @param yearMonth 年月 201907
     * @return 日期集合
     */
    List<Date> findWorkDayByYearMonth(String yearMonth, String isWork);

    /**
     * 根据年周查询工作日
     * @param year 年
     * @param week 周
     * @return 工作日
     */
    List<Date> findWorkDayByYearWeek(String year, String week);


    /**
     * 根据年月查询工作日日集合
     *
     * @param yearMonth 年月 201907
     * @return 日期集合
     */
    List<Integer> findWorkDayNumByYearMonth(String yearMonth);

    /**
     * 查询每月周数
     * @param map 查询条件
     * @return  List<List<OtdProduceCalendarVO>>
     */
    List<OtdProduceCalendarWeekVO> weekListByMap(Map<String, Object> map);

    /**
     * 查询某个月包含哪几周
     * @param year 年
     * @param month 月
     * @return 周数集合
     */
    List<String> weekListByMonth(String year, String month);

    /**
     * 根据年周查询往后5周周数，包括查询周
     * @param year 年
     * @param week 周
     * @return 周数集合
     */
    List<String> weekListByYearWeek(String year, String week);

    /**
     * 根据年月查询周数 格式：01(2019-01-01~2019-01-07)
     * @param yearMonth 年月
     * @return  List<List<OtdProduceCalendarVO>>
     */
    ApiResult weekColumnHead(String yearMonth);

    /**
     * 根据选定周查询5周列头 格式：01(2019-01-01~2019-01-07)
     * @param year 年
     * @param week 周
     * @return ApiResult
     */
    ApiResult weekColumnHeadByWeek(String year, String week);
}
